
/**
 * 通过mixins
 * 对table表格增删改查 提取封装；
 */
import { initData } from '@/api/data'
export default {
  data() {
    return {
      // 表格数据
      data: [],
      // 排序规则， 默认 ID 降序，
      sort: ['id,desc'],
      // 页码
      page: 0,
      // 每页数据条数
      size: 10,
      // 总数据条数
      total: 0,
      // 请求的数据的url
      url: '',
      // 查询数据的参数
      params: {},
      // 待查询的对象
      query: {},
      // 等待时间
      time: 50,
      // 是否为新增类型的表单
      isAdd: false,
      // 导出的 Loading
      downloadLoading: false,
      // 表格 Loading 属性
      loading: true,
      // 删除 Loading 属性
      delLoading: false,
      delAllLoading: false,
      // 弹窗属性
      dialog: false,
      // Form 表单
      form: {},
      // 重置表单
      resetForm: {},
      // 标题
      title: ''
    }
  },
  methods: {
    async init() {
      if (!await this.beforeInit()) {
        return false
      }
      return new Promise((resolve, reject) => {
        this.loading = true // 加载loading
        // 请求数据
        initData(this.url, this.getQueryParame()).then(res => {
          this.total = res.data.data.total
          this.data = res.data.data.list
          // time 毫秒后显示表格
          setTimeout(() => {
            this.loading = false
          }, this.time)
          resolve(res)
        }).catch(err => {
          this.loading = false
          reject(err)
        })
      })
    },
    beforeInit() {
      return true
    },
    getQueryParame: function () {
      return {
        page: this.page,
        size: this.size,
        sort: this.sort,
        ...this.params,
        ...this.query
      }
    },
    // 改变页码
    pageChange(e) {
      this.page = e - 1
      this.init()
    },
    // 改变每页显示数
    sizeChange(e) {
      this.page = 0
      this.size = e
      this.init()
    }
  }
}
